<?php
abstract class ObjetoBasico{
    var $ID,$Nombre,$Descripcion,$Cargado,$Escapado,$ErrorInsercionNo,$ErrorInsercionStr,$Bonos,$Imagen,$URLImagen;
    function ObjetoBasico(){
        $this->Cargado = false;
        $this->Escapado = false;
        $this->ErrorInsercionNo = 0;
        $this->URLImagen = "pepito";
    }
    final function datosBasicosValidos($LongitudMinNombre,$LongitudMaxNombre,$LongitudMinDescripcion,$LongitudMaxDescripcion){
        $Respuesta['NumError'] = 0;
        $Respuesta['TamanoNombre'] = strlen($this->Nombre);
        $Respuesta['TamanoDescripcion'] = strlen($this->Descripcion);
        if($Respuesta['TamanoNombre'] < $LongitudMinNombre){
            $Respuesta['NumError'] = NOMBRE_MUY_CORTO;
            $Respuesta['Minimo'] = $LongitudMinNombre;
        }
        if($Respuesta['TamanoNombre'] > $LongitudMaxNombre){
            $Respuesta['NumError'] = NOMBRE_MUY_LARGO;
            $Respuesta['Maximo'] = $LongitudMaxNombre;
        }
        if($Respuesta['TamanoDescripcion'] < $LongitudMinDescripcion){
            $Respuesta['NumError'] = DESCRIPCION_MUY_CORTA;
            $Respuesta['Minimo'] = $LongitudMinDescripcion;
        }
        if($Respuesta['TamanoDescripcion'] > $LongitudMaxDescripcion){
            $Respuesta['NumError'] = DESCRIPCION_MUY_LARGA;
            $Respuesta['Maximo'] = $LongitudMaxDescripcion;
        }
        if($Respuesta['NumError'] === 0){
            return true;
        }else{
            die(json_encode($Respuesta));
        }
    }
    final function cargarObjeto($ArrayEntrada,$BoolIndices = false){
        $this->ID = @intval($ArrayEntrada['id']);
        $this->Nombre = $ArrayEntrada['Nombre'];
        $this->Descripcion = $ArrayEntrada['Descripcion'];
        $this->cargarBonosIndice($ArrayEntrada);
        $this->URLImagen = (defined('ADMIN') ? '../' : '') . MANEJADOR_IMAGENES . @intval($ArrayEntrada['Imagen']);
        $this->Cargado = true;
    }
    final function cargarBonosIndice($ArrayEntrada){
        $this->Bonos = array();
        $this->Bonos['Ataque'] = intval($ArrayEntrada['Ataque']);
        $this->Bonos['Defensa'] = intval($ArrayEntrada['Defensa']);
        $this->Bonos['Escudos'] = intval($ArrayEntrada['Escudos']);
        $this->Bonos['Velocidad'] = intval($ArrayEntrada['Velocidad']);
        $this->Bonos['Carga'] = intval($ArrayEntrada['Carga']);
        $this->Bonos['R1'] = intval($ArrayEntrada['R1']);
        $this->Bonos['R2'] = intval($ArrayEntrada['R2']);
        $this->Bonos['R3'] = intval($ArrayEntrada['R3']);
    }
}
abstract class ObjetoConCosteYRaza extends ObjetoBasico{
    var $CostePrimerRecurso,$CosteSegundoRecurso,$CosteTercerRecurso,$TiempoBase,$RID;
    // Carga los costes
    final function cargarCostes($ArrayEntrada){
        $CostePrimerRecurso = @intval($ArrayEntrada['CosteR1']);
        $CosteSegundoRecurso = @intval($ArrayEntrada['CosteR2']);
        $CosteTercerRecurso = @intval($ArrayEntrada['CosteR3']);
        $TiempoBase = @intval($ArrayEntrada['TiempoBase']);
        $this->CostePrimerRecurso = ($CostePrimerRecurso > -1) ? $CostePrimerRecurso : 0;
        $this->CosteSegundoRecurso = ($CosteSegundoRecurso > -1) ? $CosteSegundoRecurso : 0;
        $this->CosteTercerRecurso = ($CosteTercerRecurso > -1) ? $CosteTercerRecurso : 0;
        $this->TiempoBase = ($TiempoBase > -1) ? $TiempoBase : 0;
        $this->RID = @intval($ArrayEntrada['rid']);
    }
}
?>